﻿import { defineConfig } from 'vite';
import { babel } from '@rollup/plugin-babel';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import path from "path";



export default defineConfig({
    plugins: [
        // 使用 Babel 编译 .js/.jsx 文件（排除 node_modules）
        babel({
            exclude: 'node_modules/**',
            babelHelpers: 'bundled',
            presets: ['@babel/preset-env']
        }),

        // 模拟 ignore-loader：忽略 moment 的 locale 文件
        {
            name: 'ignore-moment-locale',
            resolveId(id, importer) {
                if (id === './locale' && importer && importer.includes('moment')) {
                    return { id, external: true };
                }
                return null;
            }
        },

        // 模拟 null-loader：忽略指定类型的文件
        {
            name: 'null-loader',
            transform(code, id) {
                const ignoredExtensions = /\.(exe|obj|txt|tlog|c|pdb|idb|lastbuildstate|ilk|recipe|cpp|filters|user|vcxproj|sln|log)$/i;
                if (ignoredExtensions.test(id)) {
                    return { code: '', map: null };
                }
            }
        },

        // 必须插件：支持从 node_modules 引入依赖
        nodeResolve(),
    ],

    build: {
        outDir: '../wwwroot/js', // 输出目录
        lib: {
            entry: path.resolve(__dirname, 'src/index.js'), // 你的 JS 入口文件
            name: 'MyLib', // 输出库的全局变量名
            fileName: 'my_lib', // 输出文件名
            formats: ['umd'] // 支持的打包格式
        },
        rollupOptions: {
            // 可选：排除 moment（如果你不希望打包它）
            external: [],
            output: {
                globals: {}
            }
        }
    }
});